import { POST, Download } from '@/api/helper'
import profile from '@root/profile'

const { cf } = profile.proxy

export default {
  /**
   * 新增字典
   * @param data
   * @param data.dictCode {string} 字典类型编码
   * @param data.dictDesc {string} 字典描述
   * @param data.dictName {string} 字典类型名称
   * @param data.enableFlag {string} 启用/禁用标识
   * @returns {Promise<{code:number,message:string,data:{}}>}
   */
  addDict: (data) => POST({ url: cf.prefix + '/dict/addDict', data: data }),

  /**
   * 分页获取字典
   * @param data
   * @param data.dictCode {string} 字典类型编码
   * @param data.dictName {string} 字典类型名称
   * @param data.enableFlag {string} 启用/禁用状态
   * @param data.endDate {string} 结束时间 (ISO 8601格式)
   * @param data.pageNum {number} 查询页码
   * @param data.pageSize {number} 每页条数
   * @param data.startDate {string} 开始时间 (ISO 8601格式)
   * @returns {Promise<{code:number,message:string,data:{dataList:Array<{createTime:string,dictCode:string,dictDesc:string,dictName:string,enableFlag:string,id:string}>,pageNum:number,pageSize:number,pages:number,total:number}}>}
   */
  getDictByPage: (data) =>
    POST({
      url: cf.prefix + '/dict/getDictByPage',
      data: data
    }),

  /**
   * 新增字典项
   * @param data
   * @param data.dictId {number} 字典ID
   * @param data.dictItemCode {string} 字典项编码
   * @param data.dictItemDesc {string} 字典项描述
   * @param data.dictItemName {string} 字典项名称
   * @param data.dictItemTag {string} 字典项标签
   * @param data.enableFlag {string} 启用/禁用标识
   * @returns {Promise<{code:number,message:string,data:{}}>}
   */
  addDictItem: (data) => POST({ url: cf.prefix + '/dict/addDictItem', data: data }),

  /**
   * 删除字典
   * @param data
   * @param data.id {number} 字典ID
   * @returns {Promise<{code:number,message:string,data:{}}>}
   */
  deleteDict: (data) => POST({ url: cf.prefix + '/dict/deleteDict', data: data }),

  /**
   * 删除字典项
   * @param data
   * @param data.id {number} 字典项ID
   * @returns {Promise<{code:number,message:string,data:{}}>}
   */
  deleteDictItem: (data) =>
    POST({
      url: cf.prefix + '/dict/deleteDictItem',
      data: data
    }),

  /**
   * 编辑字典
   * @param data
   * @param data.dictCode {string} 字典类型编码
   * @param data.dictDesc {string} 字典描述
   * @param data.dictName {string} 字典类型名称
   * @param data.enableFlag {string} 启用/禁用标识
   * @param data.id {number} 字典ID
   * @returns {Promise<{code:number,message:string,data:{}}>}
   */
  editDict: (data) => POST({ url: cf.prefix + '/dict/editDict', data: data }),

  /**
   * 编辑字典项
   * @param data
   * @param data.dictId {number} 字典ID
   * @param data.dictItemCode {string} 字典项编码
   * @param data.dictItemDesc {string} 字典项描述
   * @param data.dictItemName {string} 字典项名称
   * @param data.dictItemTag {string} 字典项标签
   * @param data.enableFlag {string} 启用/禁用标识
   * @param data.id {number} 字典项ID
   * @returns {Promise<{code:number,message:string,data:{}}>}
   */
  editDictItem: (data) => POST({ url: cf.prefix + '/dict/editDictItem', data: data }),

  /**
   * 获取字典详情
   * @param data
   * @param data.id {number} 字典ID
   * @returns {Promise<{code:number,message:string,data:{dictCode:string,dictName:string,id:string,dictItems:Array<{dictId:string,dictItemCode:string,dictItemName:string,dictItemTag:string,id:string}>}}>}
   */
  getDictById: (data) => POST({ url: cf.prefix + '/dict/getDictById', data: data }),

  /**
   * 获取字典项详情
   * @param data
   * @param data.id {number} 字典ID
   * @returns {Promise<{code:number,message:string,data:{dictId:string,dictItemCode:string,dictItemName:string,dictItemTag:string,id:string}}>}
   */
  getDictItemById: (data) => POST({ url: cf.prefix + '/dict/getDictItemById', data: data }),

  /**
   * 获取字典项列表
   * @param data
   * @param data.id {number} 字典ID
   * @returns {Promise<{code:number,message:string,data:Array<{dictId:string,dictItemCode:string,dictItemName:string,dictItemTag:string,id:string}>}>}
   */
  getDictItemListByDictId: (data) =>
    POST({
      url: cf.prefix + '/dict/getDictItemListByDictId',
      data: data
    }),

  /**
   *
   * @param data
   * @param fileName {string} 文件名称
   * @param data.dictCode {string} 字典类型编码
   * @param data.dictName {string} 字典类型名称
   * @param data.enableFlag {string} 启用/禁用状态
   * @param data.endDate {string} 结束时间 (ISO 8601格式)
   * @param data.pageNum {number} 查询页码
   * @param data.pageSize {number} 每页条数
   * @param data.startDate {string} 开始时间 (ISO 8601格式)
   * @returns {Promise<unknown>}
   */
  exportDict: (data, fileName) =>
    Download({
      url: cf.prefix + '/dict/exportDict',
      data: data,
      fileName
    }),

  /**
   *
   * @param data
   * @param fileName {string} 文件名称
   * @returns {Promise<unknown>}
   */
  exportDictItem: (data, fileName) =>
    Download({
      url: cf.prefix + '/dict/exportDictItem',
      data: data,
      fileName
    }),

  /**
   * 获取所有字典
   * @return {Promise<{code:number,message:string,data:Array<IDict>}>}
   */
  getAllDict: () => POST({ url: cf.prefix + '/dict/getAllDict' })
}
